package com.fouram.flowable.service;

import com.fouram.flowable.domain.bo.*;
import com.fouram.flowable.domain.vo.HistoricActivityInstanceVo;
import com.fouram.flowable.domain.vo.TaskVo;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;

import java.util.List;

public interface WorkFlowService {

    /**
     * 通过xml部署流程定义
     */
    ProcessDefinition deployDeployment(DeployDeploymentBo bo);

    /**
     * Starts a new process instance
     * @param bo
     * @return
     */
    ProcessInstance startProcessInstance(StartProcessInstanceBo bo);

    /**
     * 查看流程进度图
     * @throws Exception
     */
    void getHistoryImage(GetHistoryImageBo bo) throws Exception;

    /**
     * 通过业务id获取历史流程图运行中，历史等节点
     */
    List<HistoricActivityInstanceVo> getHistoryList(GetHistoryListBo bo);

    /**
     * 查询分配给当前用户的所有任务
     * @return
     */
    List<TaskVo> getTodoTaskList(GetTodoTaskListBo bo);

    /**
     * 完成任务
     */
    void completeTask(CompleteTaskBo bo);

    /**
     * 修改任务处理人
     */
    void changeTaskAssignee(ChangeTaskAssigneeBo bo);
}
